home *** CD-ROM | disk | FTP | other *** search
- #!/bin/bash
- #
- # This is the modules-update script for Debian GNU/Linux.
- # Written by Wichert Akkerman <wakkerma@debian.org>
- # Copyright (C) 1998, 1999 Software in the Public Interest
- #
- # Modifications by Daniel Robbins <drobbins@gentoo.org>, Gentoo Foundation
- # 02 Sep 2001 -- Removed "arch" stuff since I see no reason to have
- # support for varying CPU architectures on a single system.
- #
- # Updated by Aron Griffis <agriffis@gentoo.org>
- # 05 May 2004 -- handle --assume-kernel argument for livecd building
-
- CFGFILE="/etc/modules.conf"
- TMPFILE="${CFGFILE}.$$"
- CFGFILE2="/etc/modprobe.conf"
- TMPFILE2="${CFGFILE2}.$$"
- CFGFILE3="/etc/modules.devfs"
- TMPFILE3="${CFGFILE3}.$$"
- CFGFILE4="/etc/modprobe.devfs"
- TMPFILE4="${CFGFILE4}.$$"
- MODDIR="/etc/modules.d"
- ARCHDIR="${MODDIR}/arch"
- HEADER="### This file is automatically generated by modules-update"
-
- source /sbin/functions.sh
-
- # Parse command-line
- FORCE=false
- ASSUME_KV=
- while [ -n "$1" ]; do
- case "$1" in
- force)
- FORCE=true ;;
- --assume-kernel=*)
- ASSUME_KV=${1#*=} ;;
- *)
- echo "Error: I don't understand $1" >&2
- exit 1 ;;
- esac
- shift
- done
-
- # Set kernel version, either from --assume-kernel or uname -r
- KV=${ASSUME_KV:-$(uname -r)}
- if [[ $(KV_to_int ${KV}) -ge $(KV_to_int 2.5.48) ]]; then
- KERNEL_2_5=true
- else
- KERNEL_2_5=false
- fi
-
- set -e
-
- # Reset the sorting order since we depend on it
- export LC_COLLATE="C"
-
- depdir() {
- dep="`sed -n -e '/[ \t]*depfile=/h;${x;s/[ \t]*depfile=//g;s,/[^/]*$,,p}' ${CFGFILE}`"
- if [ -z "${dep}" ]
- then
- dep="/lib/modules/${KV}"
- fi
-
- echo "${dep}"
- }
-
- CFGFILES="${CFGFILE}"
-
- if ${KERNEL_2_5}; then
- CFGFILES="${CFGFILES} ${CFGFILE2} ${CFGFILE4}"
- fi
-
- for x in ${CFGFILES}
- do
- if [ -f "${x}" ]
- then
- if ! sed -ne 1p "${x}" | egrep -q "^${HEADER}"
- then
- echo "Error: the current ${x} is not automatically generated."
-
- if $FORCE; then
- echo "force specified, (re)generating file anyway."
- else
- echo "Use \"modules-update force\" to force (re)generation."
- exit 1
- fi
- fi
- fi
- done
-
- if [ 0 -ne "`id -u`" ]
- then
- echo "You have to be root to do this."
- exit 2
- fi
-
- if [ -e "${CFGFILE}" ]
- then
- cp -f "${CFGFILE}" "${CFGFILE}".old
- fi
- if ${KERNEL_2_5}; then
- if [ -e "${CFGFILE2}" ]
- then
- cp -f "${CFGFILE2}" "${CFGFILE2}".old
- fi
- if [ -e "${CFGFILE4}" ]
- then
- cp -f "${CFGFILE4}" "${CFGFILE4}".old
- fi
- fi
-
-
- echo "${HEADER}" > "${TMPFILE}"
- cat <<EOF >> "${TMPFILE}"
- #
- # Please do not edit this file directly. If you want to change or add
- # anything please take a look at the files in ${MODDIR} and read
- # the manpage for modules-update.
- #
- EOF
- if [ -x /sbin/generate-modprobe.conf -a "${KERNEL_2_5}" = "true" ]
- then
- sed -e "s:the files in ${MODDIR}:${CFGFILE}:" \
- "${TMPFILE}" > "${TMPFILE2}"
-
- if [ -f "${CFGFILE3}" ]
- then
- sed -e "s:the files in ${MODDIR}:${CFGFILE3}:" \
- "${TMPFILE}" > "${TMPFILE4}"
- fi
- fi
-
- for cfg in "${MODDIR}"/* "${CONF}"
- do
- [ -d "${cfg}" ] && continue
-
- [ ! -r "${cfg}" ] && continue
-
- # Skip backup and RCS files; fixes bug 20597 (07 May 2004 agriffis)
- [[ ${cfg} == *~ || ${cfg} == *.bak || ${cfg} == *,v ]] && continue
-
- echo "### modules-update: start processing ${cfg}" >> "${TMPFILE}"
-
- if [ -x ${cfg} ]
- then
- # $cfg can be executable; nice touch, Wichert! :)
- "${cfg}" >> "${TMPFILE}"
- else
- cat "${cfg}" >> "${TMPFILE}"
- fi
-
- echo >> "${TMPFILE}"
- echo "### modules-update: end processing ${cfg}" >> "${TMPFILE}"
- echo >> "${TMPFILE}"
- done
-
- mv -f "${TMPFILE}" "${CFGFILE}"
-
- if [ -x /sbin/generate-modprobe.conf -a "${KERNEL_2_5}" = "true" ]
- then
- # Make sure that generate-modprobe.conf can handle --assume-kernel
- # if we were called with it.
- if [[ -n ${ASSUME_KV} ]] && ! grep -qe --assume-kernel \
- /sbin/generate-modprobe.conf
- then
- eerror "Error: modules-update called with --assume-kernel flag, but"
- eerror "generate-modprobe.conf doesn't understand it. You need to"
- eerror "install >=module-init-tools-3.0-r2"
- exit 3
- fi
- if /sbin/generate-modprobe.conf ${ASSUME_KV:+--assume-kernel=${KV}} \
- >> "${TMPFILE2}" 2> /dev/null
- then
- mv -f "${TMPFILE2}" "${CFGFILE2}"
- else
- ewarn "Warning: could not generate ${CFGFILE2}!"
- rm -f "${TMPFILE2}"
- fi
-
- if [ -f "${CFGFILE3}" ]
- then
- gawk '$0 !~ /^[[:space:]]*include/ { print $0 }' "${CFGFILE3}" \
- > "${TMPFILE3}"
-
- export TESTING_MODPROBE_CONF="${TMPFILE3}"
- if /sbin/generate-modprobe.conf ${ASSUME_KV:+--assume-kernel=${KV}} \
- >> "${TMPFILE4}" 2> /dev/null
- then
- mv -f "${TMPFILE4}" "${CFGFILE4}"
-
- echo >> "${CFGFILE4}"
- echo "include /etc/modprobe.conf" >> "${CFGFILE4}"
- else
- ewarn "Warning: could not generate ${CFGFILE4}!"
- rm -f "${TMPFILE4}"
- fi
- rm -f "${TMPFILE3}"
- fi
- fi
-
- # We also call depmod here to stop insmod from complaining that modules.conf
- # is more recent then modules.dep
- #
- if [ -d "`depdir`" -a -f /proc/modules ]
- then
- if [ -f /usr/src/linux/System.map ]; then
- depmod -a -F /usr/src/linux/System.map ${KV}
- else
- ewarn "System.map not found - unable to check symbols"
- fi
- fi
-
-
- # vim:ts=4
-